<?php
// +----------------------------------------------------------------------
// | 海豚PHP框架 [ DolphinPHP ]
// +----------------------------------------------------------------------
// | 版权所有 2016~2019 广东卓锐软件有限公司 [ http://www.zrthink.com ]
// +----------------------------------------------------------------------
// | 官方网站: http://dolphinphp.com
// +----------------------------------------------------------------------
namespace app\member\model;

use think\Model as ThinkModel;
use think\helper\Hash;
use think\Db;
/**
 * 广告模型
 * @package app\cms\model
 */
class Member extends ThinkModel
{
    // 设置当前模型对应的完整数据表名称
    protected $name = 'member';
    
    // 自动写入时间戳
    protected $autoWriteTimestamp = true;
    
    // 定义修改器
    public function setStartTimeAttr($value)
    {
        return $value != '' ? strtotime($value) : 0;
    }
    public function setEndTimeAttr($value)
    {
        return $value != '' ? strtotime($value) : 0;
    }
    public function getStartTimeAttr($value)
    {
        return $value != 0 ? date('Y-m-d', $value) : '';
    }
    public function getEndTimeAttr($value)
    {
        return $value != 0 ? date('Y-m-d', $value) : '';
    }
    
    // 对密码进行加密
    public function setPasswordAttr($value)
    {
        return Hash::make((string)$value);
    }
    
    public static function getdaili($where){
        $dailiarr=db('admin_user')->where($where)->field('id,nickname')->select();
        $result=array();
        if(is_array($dailiarr) && count($dailiarr)>0){
            foreach ($dailiarr as $key=>$hang){
                $result[$hang['id']]=$hang['nickname'];
            }
        }
        return $result;
    }
    
    /**
     * 用户实名认证
     * $uid:用户ID
     * $real_name:真实姓名
     * $idcar:身份证号
     */
    public function realname_do($uid,$real_name,$idcar,$sign){
        if(!preg_match("/^[\x{4e00}-\x{9fa5}]{2,6}+$/u",$real_name)){
            return array('code'=>'0','msg'=>'请输入2-6位的真实姓名！');
        }
        
        if(!is_idcard($idcar)){
            return array('code'=>'0','msg'=>'请输入18位数的有效身份证号码！');
        }
        
        $checkstatus=Db::name('members_status')->where('uid',$uid)->value('id_status');
        if(isset($checkstatus) && $checkstatus=='1'){
            return array('code'=>'0','msg'=>'已实名的用户无法更改！');
        }
        
        $checkidcard=Db::name('member_info')->where('idcard',$idcar)->count();
        if($checkidcard){
            return array('code'=>'0','msg'=>'该身份证已存在，不能重复使用！');
        }
        
        $global=get_global_setting();
        $key=(isset($global['checkidcar']) && !empty($global['checkidcar']))?$global['checkidcar']:'';
        if(!empty($key)){
            $chechshiming=check_idcarname($idcar,$real_name);
            if($chechshiming['code']=='0'){
                return array('code'=>'0','msg'=>$chechshiming['msg']);
            }
        }
        
        Db::startTrans();
        try{
            Db::name('member_info')->where('uid',$uid)->update(['real_name'=>$real_name,'idcard'=>$idcar,'uptime'=>time()]);
            Db::name('members_status')->where('uid',$uid)->update(['id_status'=>'1']);
            
            if(!xjrw_givemoney($uid,1)){
                Db::rollback();
                return array('code'=>'0','msg'=>'新手任务奖励失败');
            };
            
            if(cache($idcar)==$sign){
                Db::commit();
                return array('code'=>'1','msg'=>'实名成功');
            }else{
                Db::rollback();
                return array('code'=>'0','msg'=>'请不要重复提交');
            }
        } catch (\Exception $e){
            Db::rollback();
            return array('code'=>'0','msg'=>'实名失败');
        }
    }
    
    
    /**
     * 用户编辑银行卡
     * $uid:用户ID
     * $param:银行信息数据
     * $banksid:银行ID（小于0代表新增，大于0代表编辑）
     */
    public function savebank_do($uid,$param,$banksid='-1'){
        $saveData=array();
        
        if(!isset($param['bank_name']) || !is_numeric($param['bank_name']) || $param['bank_name']<1){
            return myjson('0','请选择开户银行!');
        }
        $saveData['bank_name']=trim($param['bank_name']);
        
        if(!isset($param['bank_num']) || empty($param['bank_num']) || !is_numeric($param['bank_num'])){
            return myjson('0','请输入正确的银行卡号!');
        }
        $saveData['bank_num']=trim($param['bank_num']);
        
        $newwhere=($banksid>0)?[['id','<>',$banksid],['bank_num','=',$saveData['bank_num']]]:['bank_num'=>$saveData['bank_num']];
        $banknumEist= Db::name('member_banks')->where($newwhere)->count();
        if($banknumEist){
            return myjson('0','该银行卡号已被成功添加过！');
        }
        
        if(!isset($param['bank_province']) || empty($param['bank_province']) || !is_numeric($param['bank_province'])){
            return myjson('0','请选择开户行省!');
        }
        $saveData['bank_province']=trim($param['bank_province']);
        
        if(!isset($param['bank_city']) || empty($param['bank_city']) || !is_numeric($param['bank_city'])){
            return myjson('0','请选择开户行所在市!');
        }
        $saveData['bank_city']=trim($param['bank_city']);
        
        if(!isset($param['bank_address']) || empty($param['bank_address'])){
            return myjson('0','请输入开户行名称!');
        }
        if(!preg_match('/^[0-9a-zA-Z_\x{4e00}-\x{9fa5}]+$/u', $param['bank_address'])){
            return myjson('0','开户行名称格式不正确!');
        };
        $saveData['bank_address']=trim($param['bank_address']);
        
        if(!isset($param['mobile']) || !is_mobile(trim($param['mobile']))){
            return myjson('0','请输入11位数字的手机号码!');
        }
        $mobile=trim($param['mobile']);
        
        
        if(!isset($param['vcode']) || !is_numeric(trim($param['vcode']))){
            return myjson('0','请输入6位数字的短信验证码!');
        }
        $code=trim($param['vcode']);
        
        if(!check_sms_code($mobile, $code)){
            if (cache('sms_'.$mobile) == $code){
                return myjson('0','短信验证码输入超时！');
            }else{
                if(isset($param['showtel']) && $param['showtel']=='8888'){
                    //                     return myjson('0','短信验证码不正确！'.cache('sms_'.$mobile));
                    return myjson('0','短信验证码不正确！');
                }else{
                    return myjson('0','短信验证码不正确！');
                }
            }
        }
        
        $useinfo=getuseinfo($uid);
        if($useinfo['user_name']!=$mobile){
            return myjson('0','该手机号不是您的注册绑定手机!');
        }
        
        try{
            $saveData['uid']=$uid;
            if($banksid<0){
                $banksnum=Db::name('member_banks')->where('uid',$uid)->count();
                if($banksnum=='3'){
                    return myjson('0','绑定银行卡不能超过3张!');
                }
                
                if($banksnum=='0'){     //增加新手任务
                    $bankscheck=Db::name('members_status')->where('uid',$uid)->value('email_status');
                    if(isset($bankscheck) && $bankscheck=='0'){
                        xjrw_givemoney($uid,4);
                        Db::name('members_status')->where('uid',$uid)->setField('email_status','1');
                    }
                }
                
                $saveData['add_time']=time();
                $saveData['add_ip']=get_client_ip();
                Db::name('member_banks')->insert($saveData);
            }else{
                $checkid=Db::name('member_banks')->where('id',$banksid)->count();
                if(!$checkid){
                    return myjson('0','银行卡号不存在！');
                }
                Db::name('member_banks')->where('id',$banksid)->update($saveData);
            }
            return myjson('1','保存成功！');
        } catch (\Exception $e){
            return myjson('0','保存失败！');
        }
        
    }
    
    
}